package org.zachary.commonservice.entity;

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * (CreditScoreStrategy)实体类
 *
 * @author makejava
 * @since 2025-06-24 23:27:36
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CreditScoreStrategy implements Serializable {
    private static final long serialVersionUID = -68897118252358357L;
/**
     * 主键
     */
    private Integer id;
/**
     * 服务名
     */
    private String serviceName;
/**
     * 信用分区间上限
     */
    private Integer up;
/**
     * 信用分区间下限
     */
    private Integer down;
/**
     * 守约加分分值
     */
    private Integer addScore;
/**
     * 第一违约期限扣分值
     */
    private Integer minusScore1;
/**
     * 第二违约期扣分分值
     */
    private Integer minusScore2;
/**
     * 第三违约期限扣分分值
     */
    private Integer minusScore3;
/**
     * 第四违约期限扣分分值（默认0）
     */
    private Integer minusScore4;
/**
     * 最终日期扣分分值（代码逻辑定义不可用策略）
     */
    private Integer minusScoreDeadline;
/**
     * 守约加分基准金额
     */
    private Double amount;

    // entity/CreditScoreStrategy.java
    public int getPenaltyByPeriod(int overduePeriod) {
        return switch (overduePeriod) {
            case 1 -> this.minusScore1;
            case 2 -> this.minusScore2;
            case 3 -> this.minusScore3;
            case 4 -> this.minusScore4;
            default -> this.minusScoreDeadline; // 4期以上或无效期数
        };
    }
}

